Skip to main content
Version: Next

Guide de Développement des Fonctionnalités et Microservices

Ajouter de nouvelles fonctionnalités

  1. Créer une branche spécifique pour cette nouvelle fonctionnalité
  • Le nom de la branche sera le nom du stage pour des raisons de simplicité. ⚠️ Vérifiez bien que ce nom de stage n'a jamais été utilisé (ajoutez un identifiant ou un nom aléatoire dans le nom de la branche si nécessaire).
  1. Créer un nouveau stage dans cette branche
  • Ce stage existera uniquement pour l'ajout de cette fonctionnalité.
  • Le contrecoup de cette méthode est que lors de la suppression d'une branche, il faudra supprimer toutes les ressources AWS créées pour ce stage.

Note pour plus tard:

  • L'idéal serait de déployer les stages de développement sur LocalStack. Cela permettrait de potentiellement accélérer la vitesse de déploiement et de ne pas consommer de ressources AWS pour le développement.

Ajouter un stage:

  1. Créer une API dans ApiGateway. // réellement ?

  2. Prendre l'ApiGatewayId et le RootId (ID de l'élément racine de l'API).

  3. Créer un stage.json dans le répertoire ./app/deploy/env/.

    ⚠️ Pour chaque microservice, pensez à mettre le bon stage dans le .env à la racine du microservice.

Initialiser les microservices

  1. Allez dans le microservice init.
  2. Dans le répertoire useful-scripts, vous pouvez exécuter le script migrate.sh afin de migrer le schéma Prisma vers une base de données dédiée à ce stage.
  3. Build et déployez le microservice init avec les scripts build.sh et deploy.sh. Ce service initialise les authorizers et la route 404 ainsi que les différentes ressources (DynamoDB, S3).
  4. Déployez tous les microservices nécessaires à vos tests (certainement auth-rs, auth-bo pour créer un compte au minimum).

En cas de problème, contactez le ....

Ajouter un microservice:

  1. Créez un répertoire au nom de votre microservice dans ./app/src/micro-services.
  2. Allez dans ce répertoire et créez un symlink vers le répertoire useful-scripts qui se trouve dans ./app:
    ln -s ../../../useful-scripts useful-scripts
  3. Allez dans le répertoire useful-scripts et exécutez le script init-service.sh. Ce script crée une arborescence de répertoires et les fichiers nécessaires au bon déploiement du microservice. Les fichiers créés sont vides (tsconfig.json, .env, serverless.ts). Il faut évidemment les remplir avec le contenu attendu. Vous pouvez copier-coller le contenu des fichiers de n'importe quel autre service à part init, ce service est particulier et n'a pas la même configuration que les autres. Ce script installe aussi les dépendances nécessaires au bon fonctionnement du microservice. Évidemment, vous pouvez ajouter des dépendances en plus si vous le souhaitez.

Infos utiles:

  • Si vous installez un nouveau package dans un microservice, il est possible que Docker ait mis en cache les node_modules. La solution la plus simple dans ce cas-là est de faire:

    docker system prune -a

    afin de supprimer toutes les mises en cache et toutes les images. Une fois cela fait, vous devrez reconstruire l'image Docker des microservices que vous souhaitez déployer.

  • Le schéma local n'est pas déployé sur une base de données locale mais sur une base de données sur AWS. Ce schéma existe dans un but de développement.

  • Le fichier properties contient des variables qui peuvent être retrouvées en runtime avec la méthode getProperty du properties-service. L'objet GLOBAL permet d'accéder aux variables quel que soit le stage. Pour définir des variables spécifiques à un stage, vous pouvez créer un objet nommé d'après le stage :

    {
    "main" : {
    "var" : "value"
    }
    }